<?php
class news {
	
	/**
	 * Конструктор, проверяем подключение к бд
	 *
	 * @return news
	 */
	function news() {
		global $db,$config;
		if (!isset($db)) {
			$db=database();
		}
	}
	
	
	/**
	 * Возвращает заданное количество новостей
	 *
	 * @param string $name
	 * @param int $count
	 * 
	 * @return mixed fetchArray
	 */
	function get($name='main', $count=5, $from=0, $sortby='date', $sortdir='ASC') {
		global $db;
		return $db->fetchAll('SELECT ~news.id, ~news.date, ~news.act, ~news.title, ~news.anons, ~news.text, ~news.image FROM ~news RIGHT JOIN ~news_categories ON ~news_categories.id = ~news.pid WHERE ~news_categories.name=$ ORDER BY ~news.`'.$sortby.'` '.$sortdir.',~news.id '.$sortdir.' LIMIT $, $',$name,$from,$count);
	}
	
	
	/**
	 * Вывод заданного количества последних новостей без текста только с анонсом
	 *
	 * @param string $name
	 * @param int $count
	 * 
	 * @return mixed fetchArray
	 */
	function getAnons($name='main', $count=5, $from=0, $sortby='date', $sortdir='DESC') {
		global $db;
		return $db->fetchAll('SELECT ~news.id, ~news.date, ~news.act, ~news.title, ~news.anons, ~news.image FROM ~news RIGHT JOIN ~news_categories ON ~news_categories.id = ~news.pid WHERE ~news_categories.name=$ ORDER BY ~news.`'.$sortby.'` '.$sortdir.',~news.id '.$sortdir.' LIMIT $, $',$name,$from,$count);
	}
	
	
	/**
	 * Возвращает заданное количество последних новостей
	 *
	 * @param string $name
	 * @param int $count
	 * 
	 * @return mixed fetchArray
	 */
	function last($name='main', $count=5) {
		global $db;
		return $db->fetchAll('SELECT ~news.id, ~news.date, ~news.act, ~news.title, ~news.anons, ~news.text, ~news.image FROM ~news RIGHT JOIN ~news_categories ON ~news_categories.id = ~news.pid WHERE ~news_categories.name=$ ORDER BY ~news.date DESC LIMIT $', $name, $count);
	}
	
	
	/**
	 * Получить новость по id
	 *
	 * @param int $id
	 * @return mixed массив с новостью
	 */
	function getById($id=0) {
		global $db;
		return $db->fetchRow('SELECT ~news.id, ~news.date, ~news.title, ~news.text, ~news.anons, ~news.image FROM ~news WHERE ~news.id=$',$id);
	}
	
	/**
	 * Возвращает количество новостей
	 *
	 * @param unknown_type $name
	 * 
	 * @return int $count
	 */
	function count($name='main') {
		global $db;
		return $db->count('news');
	}
	
	/**
	 * Добавить новость
	 *
	 * @param str $title
	 * @param str $text
	 * @param str $date
	 * @param bool $act
	 * @param str $image
	 * @return int - insertion id
	 */
	function add($title, $anons, $text, $date='', $act=true, $image='') {
		global $db;
		$vals = array(
			'title' => $title,
			'anons' => $anons,
			'text' => $text,
			'date' => (empty($date))?date('m/d/Y'):$date,
			'act' => $act,
			'image' => $image
		);
		if (!$db->insert('news',$vals)) return false;
		return $db->insertId();
	}
	
	/**
	 * Обновить новость
	 *
	 * @param int $id
	 * @param str $title
	 * @param str $text
	 * @param str $date
	 * @param bool $act
	 * @param str $image
	 * @return int - insertion id
	 */
	function update($id,$title,$anons,$text,$date='',$act=true,$image='') {
		global $db;
		$vals = array(
			'title' => $title,
			'anons' => $anons,
			'text' => $text,
			'date' => (empty($date))?date('m/d/Y'):$date,
			'act' => $act,
			'image' => $image
		);
		return $db->update('news',$vals,'~news.id='.$id);
	}
	
	
	function delete($id) {
		global $db;
		$db->delete('news',$id);
	}
	
}
?>